同時処理が安全な修飾子

このセクションのすべてのメンバー関数は、コンテナーをトラバースしながら、同時にルックアップ・メソッドを実行できます。

値を挿入

std::pair<iterator, bool> insert( const value_type& value );

コンテナーに value の挿入を試みます。

戻り値: std::pair<iterator, bool>iterator は、挿入された要素、または既存の同等の要素を指します。挿入が行われた場合、ブール値は true それ以外は false です。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の CopyInsertable 要件を満たしている必要があります。


iterator insert( const_iterator hint, const value_type& other );

コンテナーに value の挿入を試みます。

オプションで、要素を配置する場所の候補として hintパラメーターを指定できます。

戻り値: 挿入された要素、または既存の同等の要素への iterator を返します。。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の CopyInsertable 要件を満たしている必要があります。


std::pair<iterator, bool> insert( value_type&& value );

ムーブ・セマンティクスを使用してコンテナーに value の挿入を試みます。

value は有効のままですが、未指定の状態となります。

戻り値: std::pair<iterator, bool>iterator は、挿入された要素、または既存の同等の要素を指します。挿入が行われた場合、ブール値は true それ以外は false です。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の MoveInsertable 要件を満たしている必要があります。


iterator insert( const_iterator hint, value_type&& other );

ムーブ・セマンティクスを使用してコンテナーに value の挿入を試みます。

オプションで、要素を配置する場所の候補として hint パラメーターを指定できます。

value は有効のままですが、未指定の状態となります。

戻り値: 挿入された要素、または既存の同等の要素への iterator を返します。。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の MoveInsertable 要件を満たしている必要があります。

要素のシーケンスを挿入

template <typename InputIterator> 
void insert( InputIterator first, InputIterator last );

半開区間l [first, last) からすべての項目をコンテナーに挿入しようとします。

半開区間 [first, last) に複数の同等の要素が含まれている場合、どの要素が挿入されるかは未指定です。

要件: InputIterator タイプは、[input.iterators] ISO C++ 標準の InputIterator 要件を満たしている必要があります。


void insert( std::initializer_list<value_type> init );

insert(init.begin(), init.end()) と等価です。

ノードを挿入

std::pair<iterator, bool> insert( node_type&& nh );

ノードハンドル nh が空の場合は何も行いません。

それ以外は、nh が所有するノードをコンテナーに挿入することを試みます。

挿入に失敗すると、ノードハンドル nh はノードの所有権を維持します。

それ以外は、nh は空の状態になります。

value_type のコンストラクターのコピーおよび移動は行われません。

nh が空ではなく、get_allocator() != nh.get_allocator() である場合の動作は未定義です。

戻り値: std::pair<iterator, bool>iterator は、挿入された要素、または nh.value() と同等の既存の要素を指します。挿入が行われた場合、ブール値は true それ以外は false です。


iterator insert( const_iterator hint, node_type&& nh );

ノードハンドル nh が空の場合は何も行いません。

それ以外は、nh が所有するノードをコンテナーに挿入することを試みます。

オプションで、ノードを配置する場所の候補として hint パラメーターを指定できます。

挿入に失敗すると、ノードハンドル nh はノードの所有権を維持します。

それ以外は、nh は空の状態になります。

value_type のコンストラクターのコピーおよび移動は行われません。

nh が空ではなく、get_allocator() != nh.get_allocator() である場合の動作は未定義です。

戻り値: 挿入された要素、または nh.value() に等しい既存の要素への iterator を返します。

要素の配置

template <typename...Args> 
std::pair<iterator, bool> emplace( Args&&... args );

args からインプレースで構築された要素をコンテナーに挿入しようとします。

戻り値: std::pair<iterator, bool>iterator は、挿入された要素、または既存の同等の要素を指します。挿入が行われた場合、ブール値は true それ以外は false です

要件: value_type タイプは、[container.requirements] ISO C++ 標準の EmplaceConstructible 要件を満たしている必要があります。


template <typename...Args> 
iterator emplace_hint( const_iterator hint, Args&&... args );

args からインプレースで構築された要素をコンテナーに挿入しようとします。

オプションで、ノードを配置する場所の候補として hint パラメーターを指定できます。

戻り値: 挿入された要素、または既存の同等の要素への iterator を返します。

要件: value_type タイプは、[container.requirements] ISO C++ 標準の EmplaceConstructible 要件を満たしている必要があります。

コンテナーをマージ

template <typename SrcHash, typename SrcKeyEqual> 
void merge( concurrent_unordered_set<T, SrcHash, SrcKeyEqual, Allocator>& source ); 
template <typename SrcHash, typename SrcKeyEqual> 
void merge( concurrent_unordered_set<T, SrcHash, SrcKeyEqual, Allocator>&& source ); 
template <typename SrcHash, typename SrcKeyEqual> 
void merge( concurrent_unordered_multiset<T, SrcHash, SrcKeyEqual, Allocator>& source ); 
template <typename SrcHash, typename SrcKeyEqual> 
void merge( concurrent_unordered_multiset<T, SrcHash, SrcKeyEqual, Allocator>&& source );

コンテナーに存在しない要素を source から転送します。

複数の等しい要素が含まれているコンテナーとマージする場合、どの要素が転送されるかは未指定です。

value_type のコンストラクターのコピーおよび移動は行われません。

get_allocator() != source.get_allocator() である場合、動作は未定義です。